Computing technology has transformed the way we work and play. Businesses, residences, and other enterprises have come to rely on computing systems to manage their key operational data. Often, the data itself is many times more valuable to an enterprise than the computing hardware that stores the data. Accordingly, in this information age, many enterprises have taken precautions to protect their data.
One way of protecting data is to introduce storage redundancy. For example, a primary computing system maintains and operates upon the active data. Meanwhile, a backup computing system maintains a copy of the data as the active data existed at a previous instant in time. The backup copy of the data is periodically updated. More frequent updates tend to increase the freshness of the data at the backup computing system.
In order provide such a backup copy to the backup computing system, resources associated with the channel between the primary and backup computing systems are used. For example, when the primary and backup computing systems are located across a network, network bandwidth and other resources are consumed. Even if the primary and backup computing systems are located on the same machine, disk access time and processing resources are expended.
In order to reduce the channel resources expended in order to transfer the backup copy, incremental backup technology is employed. Initially, a full backup is performed such that the backed up memory blocks on the backup computing system have the same content as the corresponding primary memory blocks on the primary computing system. Moving forward from the time of the last backup, the primary computing system may continue to operate on the primary data. As this happens, the content of certain memory blocks (e.g., disk sectors or clusters) on the primary computing system may change due to writes to such memory blocks. During a subsequent incremental backup operation, only the content for the associated primary memory blocks that have changed since the time of the last backup operation are transferred to the backup computing system.
Once the next incremental backup is completed, if the next backup is to be an incremental backup, the changes since the last incremental backup are once again identified, and then only those memory blocks that have changed are sent to the backup computing system in the next backup. A single full backup may thus have multiple subsequent incremental backups. A common configuration is to create the full (also called “baseline”) backup at some interval (e.g. weekly) with incremental backups at smaller intervals (e.g. daily) between the full backups.
When it comes time to do a restore, the restoration is often done in forward chronological order starting with the last full backup. Specifically, the last full backup is accessed by the primary computing system (or any computing system being restored to), and all of the sectors are written back to the disk. Then, the first incremental backup after the last full backup is accessed, and those sectors are written to the disk. This repeats for all subsequent backups until the final incremental backup before the time being restored to.
Some sectors repeatedly change. For example, the Master File Table (MFT) in the NT File System (NTFS) frequently changes. These changed sectors often show up in every incremental backup. Thus, a forward chronological restore often results in multiple writes to the same sector. This can take additional restoration time. Furthermore, some non-volatile storage has a useful lifetime that is measured in number of writes. Accordingly, unnecessary writes may reduce the operating lifetime of the non-volatile memory being restored to. An example of such non-volatile storage is FLASH memory.